/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Control;

import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Leonardo Bohórquez
 */
public class Controlador {

    private static Controlador controlador = null;
    private static Double respuesta = null;
    private static ArrayList<Double> numeros = new ArrayList<>();

    public static Double getRespuesta() {
	return respuesta;
    }

    public static void setRespuesta(Double respuesta) {
	Controlador.respuesta = respuesta;
    }

    private Controlador() {
	numeros.add(0.);
	numeros.add(0.);
    }

    public static synchronized Controlador getInstance() {
	if (controlador == null) {
	    controlador = new Controlador();
	}
	return controlador;
    }

    public static Double ejecutar(int oper, String a, String b) {

        try {
            numeros.set(0, Double.parseDouble(a));
            numeros.set(1, Double.parseDouble(b));
            respuesta = Operaciones.getInstance().ejecutar(oper, numeros);

        } catch (NumberFormatException | ArithmeticException e) {
//            System.err.print(e.getMessage());
//            e.printStackTrace(System.err);
            JOptionPane.showMessageDialog(null, "Error al efectuar la operacion:\n"
                    + e.getClass().getName() + "\n" + e.getLocalizedMessage(), "Error",
                    JOptionPane.ERROR_MESSAGE);
            respuesta = Double.NaN;

        }
        return respuesta;

//	return ejecutar(oper, Double.parseDouble(a), Double.parseDouble(b));
    }

    public static Double ejecutar(int oper, Double a, Double b) {
	try {
	    numeros.set(0, a);
	    numeros.set(1, a);
	    respuesta = Operaciones.getInstance().ejecutar(oper, numeros);

	} catch (NumberFormatException | ArithmeticException e) {
//            System.err.print(e.getMessage());
//            e.printStackTrace(System.err);
	    JOptionPane.showMessageDialog(null, "Error al efectuar la operacion:\n"
		    + e.getClass().getName() + "\n" + e.getLocalizedMessage(), "Error",
		    JOptionPane.ERROR_MESSAGE);
	    respuesta = Double.NaN;

	}
	return respuesta;
    }
}
